Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Added ability to enforce max connection timeout. It is applied to new connections and makes them terminate connection attempt after configured number of milliseconds. Feature is needed because connect part might take minutes in some environments.
NodeJS channel uses
net.Socket
when non-encrypted and it's subclasstls.TLSSocket
when encrypted. Connection timeout is implemented usingsocket.setTimeout()
function which triggers a callback after configured millis of inactivity. We first initiate a connection attempt and them set the timeout. If connection establishes before the timeout then later is canceled. Otherwisetimeout
event is fired and socket is destroyed.WebSocket channel used in browser does not have built-in timeout functionality. That is why we simply use
setTimeout()
that closes WebSocket if it does not connect in time. Successful connection cancels the timeout.Feature is turned of by default and can be configured using
connectionTimeout
property in the config. Example: